package com.ourteam.product.model.dao;

import net.dao.BaseQueryBean;
import net.dao.BaseWhereCriterion;
import net.dao.IDataAccessInterface;

import org.apache.commons.lang.StringUtils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;


/**
 * Template Name : DAO查询对象
 * Template Version : 1
 * Template Last Modfiy Date : Sat Aug 19 10:06:32 IRKT 2017
 * Auto Generate Date : 2017-11-17 11:01:03
  * Warning ! This file will be overwrite when regenerate !
  *
 */
public class ProductModelPropertyRelateDAOQueryBean extends BaseQueryBean {
    public ProductModelPropertyRelateDAOQueryBean() {
        super();
    }

    public ProductModelPropertyRelateDAOQueryBean(BaseQueryBean aQueryBean) {
        super(aQueryBean);
    }

    public ProductModelPropertyRelateDAOQueryBean(BaseQueryBean aQueryBean,
        Map tableReplaceMap) {
        super(aQueryBean, tableReplaceMap);
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();

        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }

        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        return new Criteria(this);
    }

    public void addIdSelectProperty() {
        addIdSelectProperty("id");
    }

    public void addIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.Id, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.Id, "id");
        }
    }

    public void addRelateCodeSelectProperty() {
        addRelateCodeSelectProperty("relateCode");
    }

    public void addRelateCodeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelateCode, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelateCode,
                "relateCode");
        }
    }

    public void addRelateNameSelectProperty() {
        addRelateNameSelectProperty("relateName");
    }

    public void addRelateNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelateName, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelateName,
                "relateName");
        }
    }

    public void addPropertyIdSelectProperty() {
        addPropertyIdSelectProperty("propertyId");
    }

    public void addPropertyIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyId, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyId,
                "propertyId");
        }
    }

    public void addRelatedPropertyIdSelectProperty() {
        addRelatedPropertyIdSelectProperty("relatedPropertyId");
    }

    public void addRelatedPropertyIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyId,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyId,
                "relatedPropertyId");
        }
    }

    public void addRelatedTypeSelectProperty() {
        addRelatedTypeSelectProperty("relatedType");
    }

    public void addRelatedTypeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedType, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedType,
                "relatedType");
        }
    }

    public void addRelatedConfigSelectProperty() {
        addRelatedConfigSelectProperty("relatedConfig");
    }

    public void addRelatedConfigSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedConfig,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedConfig,
                "relatedConfig");
        }
    }

    public void addSortIndexSelectProperty() {
        addSortIndexSelectProperty("sortIndex");
    }

    public void addSortIndexSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.SortIndex, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.SortIndex,
                "sortIndex");
        }
    }

    public void addStatusSelectProperty() {
        addStatusSelectProperty("status");
    }

    public void addStatusSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.Status, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.Status, "status");
        }
    }

    public void addRemarksSelectProperty() {
        addRemarksSelectProperty("remarks");
    }

    public void addRemarksSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.Remarks, aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.Remarks, "remarks");
        }
    }

    public void addObjectRelatedIdSelectProperty() {
        addObjectRelatedIdSelectProperty("objectRelatedId");
    }

    public void addObjectRelatedIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.ObjectRelatedId,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.ObjectRelatedId,
                "objectRelatedId");
        }
    }

    public void addRelatedPropertyNameSelectProperty() {
        addRelatedPropertyNameSelectProperty("relatedPropertyName");
    }

    public void addRelatedPropertyNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyName,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyName,
                "relatedPropertyName");
        }
    }

    public void addRelatedPropertyDataTypeSelectProperty() {
        addRelatedPropertyDataTypeSelectProperty("relatedPropertyDataType");
    }

    public void addRelatedPropertyDataTypeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataType,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataType,
                "relatedPropertyDataType");
        }
    }

    public void addRelatedPropertyDataTypeIdSelectProperty() {
        addRelatedPropertyDataTypeIdSelectProperty("relatedPropertyDataTypeId");
    }

    public void addRelatedPropertyDataTypeIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId,
                "relatedPropertyDataTypeId");
        }
    }

    public void addRelatedPropertyDataLengthSelectProperty() {
        addRelatedPropertyDataLengthSelectProperty("relatedPropertyDataLength");
    }

    public void addRelatedPropertyDataLengthSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataLength,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataLength,
                "relatedPropertyDataLength");
        }
    }

    public void addRelatedPropertyDataAccuracySelectProperty() {
        addRelatedPropertyDataAccuracySelectProperty(
            "relatedPropertyDataAccuracy");
    }

    public void addRelatedPropertyDataAccuracySelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy,
                "relatedPropertyDataAccuracy");
        }
    }

    public void addRelatedPropertyIsAllowNullSelectProperty() {
        addRelatedPropertyIsAllowNullSelectProperty(
            "relatedPropertyIsAllowNull");
    }

    public void addRelatedPropertyIsAllowNullSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull,
                "relatedPropertyIsAllowNull");
        }
    }

    public void addRelatedPropertyisPrimaryKeySelectProperty() {
        addRelatedPropertyisPrimaryKeySelectProperty(
            "relatedPropertyisPrimaryKey");
    }

    public void addRelatedPropertyisPrimaryKeySelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey,
                "relatedPropertyisPrimaryKey");
        }
    }

    public void addRelatedPropertyIsAutoIncSelectProperty() {
        addRelatedPropertyIsAutoIncSelectProperty("relatedPropertyIsAutoInc");
    }

    public void addRelatedPropertyIsAutoIncSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc,
                "relatedPropertyIsAutoInc");
        }
    }

    public void addRelatedPropertyObjectIdSelectProperty() {
        addRelatedPropertyObjectIdSelectProperty("relatedPropertyObjectId");
    }

    public void addRelatedPropertyObjectIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyObjectId,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyObjectId,
                "relatedPropertyObjectId");
        }
    }

    public void addRelatedPropertyObjectNameSelectProperty() {
        addRelatedPropertyObjectNameSelectProperty("relatedPropertyObjectName");
    }

    public void addRelatedPropertyObjectNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyObjectName,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyObjectName,
                "relatedPropertyObjectName");
        }
    }

    public void addRelatedPropertyObjectTypeSelectProperty() {
        addRelatedPropertyObjectTypeSelectProperty("relatedPropertyObjectType");
    }

    public void addRelatedPropertyObjectTypeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyObjectType,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.RelatedPropertyObjectType,
                "relatedPropertyObjectType");
        }
    }

    public void addPropertyNameSelectProperty() {
        addPropertyNameSelectProperty("propertyName");
    }

    public void addPropertyNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyName,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyName,
                "propertyName");
        }
    }

    public void addPropertyObjectIdSelectProperty() {
        addPropertyObjectIdSelectProperty("propertyObjectId");
    }

    public void addPropertyObjectIdSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyObjectId,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyObjectId,
                "propertyObjectId");
        }
    }

    public void addPropertyDataTypeSelectProperty() {
        addPropertyDataTypeSelectProperty("propertyDataType");
    }

    public void addPropertyDataTypeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyDataType,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyDataType,
                "propertyDataType");
        }
    }

    public void addPropertyObjectNameSelectProperty() {
        addPropertyObjectNameSelectProperty("propertyObjectName");
    }

    public void addPropertyObjectNameSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyObjectName,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyObjectName,
                "propertyObjectName");
        }
    }

    public void addPropertyObjectTypeSelectProperty() {
        addPropertyObjectTypeSelectProperty("propertyObjectType");
    }

    public void addPropertyObjectTypeSelectProperty(String aAlias) {
        if (StringUtils.isNotBlank(aAlias)) {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyObjectType,
                aAlias);
        } else {
            addSelectProperty(IProductModelPropertyRelateDAO.PropertyObjectType,
                "propertyObjectType");
        }
    }

    public void addAllSelectProperties() {
        addIdSelectProperty();

        addRelateCodeSelectProperty();

        addRelateNameSelectProperty();

        addPropertyIdSelectProperty();

        addRelatedPropertyIdSelectProperty();

        addRelatedTypeSelectProperty();

        addRelatedConfigSelectProperty();

        addSortIndexSelectProperty();

        addStatusSelectProperty();

        addRemarksSelectProperty();

        addObjectRelatedIdSelectProperty();

        addRelatedPropertyNameSelectProperty();

        addRelatedPropertyDataTypeSelectProperty();

        addRelatedPropertyDataTypeIdSelectProperty();

        addRelatedPropertyDataLengthSelectProperty();

        addRelatedPropertyDataAccuracySelectProperty();

        addRelatedPropertyIsAllowNullSelectProperty();

        addRelatedPropertyisPrimaryKeySelectProperty();

        addRelatedPropertyIsAutoIncSelectProperty();

        addRelatedPropertyObjectIdSelectProperty();

        addRelatedPropertyObjectNameSelectProperty();

        addRelatedPropertyObjectTypeSelectProperty();

        addPropertyNameSelectProperty();

        addPropertyObjectIdSelectProperty();

        addPropertyDataTypeSelectProperty();

        addPropertyObjectNameSelectProperty();

        addPropertyObjectTypeSelectProperty();
    }

    public static class Criteria extends BaseWhereCriterion<ProductModelPropertyRelateDAOQueryBean> {
        protected Criteria(ProductModelPropertyRelateDAOQueryBean aParentObject) {
            super(aParentObject);
        }

        public Criteria andIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.Id + " is null");

            return this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.Id + " is not null");

            return this;
        }

        public Criteria andIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.Id +
                " is not null AND " + IProductModelPropertyRelateDAO.Id +
                " <> ''");

            return this;
        }

        public Criteria andIdIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.Id +
                " is null OR " + IProductModelPropertyRelateDAO.Id + " = '')");

            return this;
        }

        public Criteria andIdEqualTo(long value) {
            return andIdEqualTo(Long.valueOf(value));
        }

        public Criteria andIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " = ", value, "id");

            return this;
        }

        public Criteria andIdEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Id);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdNotEqualTo(long value) {
            return andIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " <>", value, "id");

            return this;
        }

        public Criteria andIdNotEqualToOrIsNull(long value) {
            return andIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andIdNotEqualToOrIsNull(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " is null OR " +
                IProductModelPropertyRelateDAO.Id + " <>", value, "id");

            return this;
        }

        public Criteria andIdNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Id);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdGreaterThan(long value) {
            return andIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " >", value, "id");

            return this;
        }

        public Criteria andIdGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Id);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdGreaterThanOrEqualTo(long value) {
            return andIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andIdGreaterThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " >=", value, "id");

            return this;
        }

        public Criteria andIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Id);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdGreaterThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdLessThan(long value) {
            return andIdLessThan(Long.valueOf(value));
        }

        public Criteria andIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " <", value, "id");

            return this;
        }

        public Criteria andIdLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Id);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdLessThanOrEqualTo(long value) {
            return andIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andIdLessThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " <=", value, "id");

            return this;
        }

        public Criteria andIdLessThanOrEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Id);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andIdLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdIn(long[] values) {
            if (values.length == 1) {
                return andIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Id + " in", values,
                    "id");

                return this;
            }
        }

        public Criteria andIdNotIn(long[] values) {
            if (values.length == 1) {
                return andIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Id + " not in",
                    values, "id");

                return this;
            }
        }

        public Criteria andIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Id + " in", values,
                    "id");

                return this;
            }
        }

        public Criteria andIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Id + " not in",
                    values, "id");

                return this;
            }
        }

        public Criteria andIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Id + " in",
                    Arrays.asList(values), "id");

                return this;
            }
        }

        public Criteria andIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Id + " not in",
                    Arrays.asList(values), "id");

                return this;
            }
        }

        public Criteria andIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andIdBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " between",
                value1, value2, "id");

            return this;
        }

        public Criteria andIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " between",
                value1, value2, "id");

            return this;
        }

        public Criteria andIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " not between",
                value1, value2, "id");

            return this;
        }

        public Criteria andIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.Id + " not between",
                value1, value2, "id");

            return this;
        }

        public Criteria andRelateCodeIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " is null");

            return this;
        }

        public Criteria andRelateCodeIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " is not null");

            return this;
        }

        public Criteria andRelateCodeIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelateCode + " <> ''");

            return this;
        }

        public Criteria andRelateCodeIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.RelateCode +
                " is null OR " + IProductModelPropertyRelateDAO.RelateCode +
                " = '')");

            return this;
        }

        public Criteria andRelateCodeEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " = ",
                value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateCode);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateCodeEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " <>",
                value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " is null OR " + IProductModelPropertyRelateDAO.RelateCode +
                " <>", value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateCode);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateCodeNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " >",
                value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateCode);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateCodeGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " >=",
                value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateCode);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateCodeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " <",
                value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateCode);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateCodeLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " <=",
                value, "relateCode");

            return this;
        }

        public Criteria andRelateCodeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateCode);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateCodeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " like",
                buffer.toString(), "relateCode");

            return this;
        }

        public Criteria andRelateCodeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " not like", buffer.toString(), "relateCode");

            return this;
        }

        public Criteria andRelateCodeIn(List<String> values) {
            if (values.size() == 1) {
                return andRelateCodeEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateCode + " in",
                    values, "relateCode");

                return this;
            }
        }

        public Criteria andRelateCodeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelateCodeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                    " not in", values, "relateCode");

                return this;
            }
        }

        public Criteria andRelateCodeIn(String[] values) {
            if (values.length == 1) {
                return andRelateCodeEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateCode + " in",
                    Arrays.asList(values), "relateCode");

                return this;
            }
        }

        public Criteria andRelateCodeNotIn(String[] values) {
            if (values.length == 1) {
                return andRelateCodeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                    " not in", Arrays.asList(values), "relateCode");

                return this;
            }
        }

        public Criteria andRelateCodeIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelateCodeBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " between", value1, value2, "relateCode");

            return this;
        }

        public Criteria andRelateCodeNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelateCode +
                " not between", value1, value2, "relateCode");

            return this;
        }

        public Criteria andRelateNameIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " is null");

            return this;
        }

        public Criteria andRelateNameIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " is not null");

            return this;
        }

        public Criteria andRelateNameIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelateName + " <> ''");

            return this;
        }

        public Criteria andRelateNameIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.RelateName +
                " is null OR " + IProductModelPropertyRelateDAO.RelateName +
                " = '')");

            return this;
        }

        public Criteria andRelateNameEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " = ",
                value, "relateName");

            return this;
        }

        public Criteria andRelateNameEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateNameEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " <>",
                value, "relateName");

            return this;
        }

        public Criteria andRelateNameNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " is null OR " + IProductModelPropertyRelateDAO.RelateName +
                " <>", value, "relateName");

            return this;
        }

        public Criteria andRelateNameNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateNameNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " >",
                value, "relateName");

            return this;
        }

        public Criteria andRelateNameGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateNameGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " >=",
                value, "relateName");

            return this;
        }

        public Criteria andRelateNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " <",
                value, "relateName");

            return this;
        }

        public Criteria andRelateNameLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateNameLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " <=",
                value, "relateName");

            return this;
        }

        public Criteria andRelateNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelateName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelateNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " like",
                buffer.toString(), "relateName");

            return this;
        }

        public Criteria andRelateNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " not like", buffer.toString(), "relateName");

            return this;
        }

        public Criteria andRelateNameIn(List<String> values) {
            if (values.size() == 1) {
                return andRelateNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateName + " in",
                    values, "relateName");

                return this;
            }
        }

        public Criteria andRelateNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelateNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateName +
                    " not in", values, "relateName");

                return this;
            }
        }

        public Criteria andRelateNameIn(String[] values) {
            if (values.length == 1) {
                return andRelateNameEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateName + " in",
                    Arrays.asList(values), "relateName");

                return this;
            }
        }

        public Criteria andRelateNameNotIn(String[] values) {
            if (values.length == 1) {
                return andRelateNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelateName +
                    " not in", Arrays.asList(values), "relateName");

                return this;
            }
        }

        public Criteria andRelateNameIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelateNameBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " between", value1, value2, "relateName");

            return this;
        }

        public Criteria andRelateNameNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelateName +
                " not between", value1, value2, "relateName");

            return this;
        }

        public Criteria andPropertyIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " is null");

            return this;
        }

        public Criteria andPropertyIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " is not null");

            return this;
        }

        public Criteria andPropertyIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " is not null AND " +
                IProductModelPropertyRelateDAO.PropertyId + " <> ''");

            return this;
        }

        public Criteria andPropertyIdIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.PropertyId +
                " is null OR " + IProductModelPropertyRelateDAO.PropertyId +
                " = '')");

            return this;
        }

        public Criteria andPropertyIdEqualTo(long value) {
            return andPropertyIdEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " = ",
                value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdNotEqualTo(long value) {
            return andPropertyIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " <>",
                value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdNotEqualToOrIsNull(long value) {
            return andPropertyIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andPropertyIdNotEqualToOrIsNull(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " is null OR " + IProductModelPropertyRelateDAO.PropertyId +
                " <>", value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyIdNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdGreaterThan(long value) {
            return andPropertyIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andPropertyIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " >",
                value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyIdGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdGreaterThanOrEqualTo(long value) {
            return andPropertyIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyIdGreaterThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " >=",
                value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdLessThan(long value) {
            return andPropertyIdLessThan(Long.valueOf(value));
        }

        public Criteria andPropertyIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " <",
                value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdLessThanOrEqualTo(long value) {
            return andPropertyIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyIdLessThanOrEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " <=",
                value, "propertyId");

            return this;
        }

        public Criteria andPropertyIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdIn(long[] values) {
            if (values.length == 1) {
                return andPropertyIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyId + " in",
                    values, "propertyId");

                return this;
            }
        }

        public Criteria andPropertyIdNotIn(long[] values) {
            if (values.length == 1) {
                return andPropertyIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                    " not in", values, "propertyId");

                return this;
            }
        }

        public Criteria andPropertyIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andPropertyIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyId + " in",
                    values, "propertyId");

                return this;
            }
        }

        public Criteria andPropertyIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andPropertyIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                    " not in", values, "propertyId");

                return this;
            }
        }

        public Criteria andPropertyIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andPropertyIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyId + " in",
                    Arrays.asList(values), "propertyId");

                return this;
            }
        }

        public Criteria andPropertyIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andPropertyIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                    " not in", Arrays.asList(values), "propertyId");

                return this;
            }
        }

        public Criteria andPropertyIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyIdBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " between", value1, value2, "propertyId");

            return this;
        }

        public Criteria andPropertyIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " between", value1, value2, "propertyId");

            return this;
        }

        public Criteria andPropertyIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " not between", value1, value2, "propertyId");

            return this;
        }

        public Criteria andPropertyIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyId +
                " not between", value1, value2, "propertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyId + " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyIdIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyId +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyId + " = '')");

            return this;
        }

        public Criteria andRelatedPropertyIdEqualTo(long value) {
            return andRelatedPropertyIdEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " = ", value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIdEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdNotEqualTo(long value) {
            return andRelatedPropertyIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " <>", value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdNotEqualToOrIsNull(long value) {
            return andRelatedPropertyIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyId + " <>",
                value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdGreaterThan(long value) {
            return andRelatedPropertyIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " >", value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdGreaterThanOrEqualTo(long value) {
            return andRelatedPropertyIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " >=", value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdLessThan(long value) {
            return andRelatedPropertyIdLessThan(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " <", value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIdLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdLessThanOrEqualTo(long value) {
            return andRelatedPropertyIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " <=", value, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdIn(long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                    " in", values, "relatedPropertyId");

                return this;
            }
        }

        public Criteria andRelatedPropertyIdNotIn(long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                    " not in", values, "relatedPropertyId");

                return this;
            }
        }

        public Criteria andRelatedPropertyIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andRelatedPropertyIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                    " in", values, "relatedPropertyId");

                return this;
            }
        }

        public Criteria andRelatedPropertyIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andRelatedPropertyIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                    " not in", values, "relatedPropertyId");

                return this;
            }
        }

        public Criteria andRelatedPropertyIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                    " in", Arrays.asList(values), "relatedPropertyId");

                return this;
            }
        }

        public Criteria andRelatedPropertyIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                    " not in", Arrays.asList(values), "relatedPropertyId");

                return this;
            }
        }

        public Criteria andRelatedPropertyIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIdBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " between", value1, value2, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " between", value1, value2, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " not between", value1, value2, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedPropertyIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyId +
                " not between", value1, value2, "relatedPropertyId");

            return this;
        }

        public Criteria andRelatedTypeIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " is null");

            return this;
        }

        public Criteria andRelatedTypeIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " is not null");

            return this;
        }

        public Criteria andRelatedTypeIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedType + " <> ''");

            return this;
        }

        public Criteria andRelatedTypeIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.RelatedType +
                " is null OR " + IProductModelPropertyRelateDAO.RelatedType +
                " = '')");

            return this;
        }

        public Criteria andRelatedTypeEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " = ",
                value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedType);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedTypeEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " <>",
                value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " is null OR " + IProductModelPropertyRelateDAO.RelatedType +
                " <>", value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedType);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedTypeNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " >",
                value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedType);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedTypeGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " >=",
                value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedType);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedTypeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " <",
                value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedType);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedTypeLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " <=",
                value, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedType);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedTypeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " like",
                buffer.toString(), "relatedType");

            return this;
        }

        public Criteria andRelatedTypeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " not like", buffer.toString(), "relatedType");

            return this;
        }

        public Criteria andRelatedTypeIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedTypeEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                    " in", values, "relatedType");

                return this;
            }
        }

        public Criteria andRelatedTypeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedTypeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                    " not in", values, "relatedType");

                return this;
            }
        }

        public Criteria andRelatedTypeIn(String[] values) {
            if (values.length == 1) {
                return andRelatedTypeEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                    " in", Arrays.asList(values), "relatedType");

                return this;
            }
        }

        public Criteria andRelatedTypeNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedTypeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                    " not in", Arrays.asList(values), "relatedType");

                return this;
            }
        }

        public Criteria andRelatedTypeIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedTypeBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " between", value1, value2, "relatedType");

            return this;
        }

        public Criteria andRelatedTypeNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedType +
                " not between", value1, value2, "relatedType");

            return this;
        }

        public Criteria andRelatedConfigIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " is null");

            return this;
        }

        public Criteria andRelatedConfigIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " is not null");

            return this;
        }

        public Criteria andRelatedConfigIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedConfig + " <> ''");

            return this;
        }

        public Criteria andRelatedConfigIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.RelatedConfig +
                " is null OR " + IProductModelPropertyRelateDAO.RelatedConfig +
                " = '')");

            return this;
        }

        public Criteria andRelatedConfigEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " = ",
                value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedConfig);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedConfigEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " <>",
                value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " is null OR " + IProductModelPropertyRelateDAO.RelatedConfig +
                " <>", value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedConfig);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedConfigNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " >",
                value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedConfig);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedConfigGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " >=",
                value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedConfig);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedConfigGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " <",
                value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedConfig);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedConfigLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " <=",
                value, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedConfig);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedConfigLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " like", buffer.toString(), "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " not like", buffer.toString(), "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedConfigEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                    " in", values, "relatedConfig");

                return this;
            }
        }

        public Criteria andRelatedConfigNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedConfigNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                    " not in", values, "relatedConfig");

                return this;
            }
        }

        public Criteria andRelatedConfigIn(String[] values) {
            if (values.length == 1) {
                return andRelatedConfigEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                    " in", Arrays.asList(values), "relatedConfig");

                return this;
            }
        }

        public Criteria andRelatedConfigNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedConfigNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                    " not in", Arrays.asList(values), "relatedConfig");

                return this;
            }
        }

        public Criteria andRelatedConfigIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedConfigBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " between", value1, value2, "relatedConfig");

            return this;
        }

        public Criteria andRelatedConfigNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedConfig +
                " not between", value1, value2, "relatedConfig");

            return this;
        }

        public Criteria andSortIndexIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " is null");

            return this;
        }

        public Criteria andSortIndexIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                " is not null");

            return this;
        }

        public Criteria andSortIndexIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                " is not null AND " + IProductModelPropertyRelateDAO.SortIndex +
                " <> ''");

            return this;
        }

        public Criteria andSortIndexIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.SortIndex +
                " is null OR " + IProductModelPropertyRelateDAO.SortIndex +
                " = '')");

            return this;
        }

        public Criteria andSortIndexEqualTo(int value) {
            return andSortIndexEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexEqualTo(java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " = ",
                value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.SortIndex);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexNotEqualTo(int value) {
            return andSortIndexNotEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexNotEqualTo(java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " <>",
                value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotEqualToOrIsNull(int value) {
            return andSortIndexNotEqualToOrIsNull(Integer.valueOf(value));
        }

        public Criteria andSortIndexNotEqualToOrIsNull(java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                " is null OR " + IProductModelPropertyRelateDAO.SortIndex +
                " <>", value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.SortIndex);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexGreaterThan(int value) {
            return andSortIndexGreaterThan(Integer.valueOf(value));
        }

        public Criteria andSortIndexGreaterThan(java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " >",
                value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.SortIndex);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexGreaterThanOrEqualTo(int value) {
            return andSortIndexGreaterThanOrEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexGreaterThanOrEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " >=",
                value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.SortIndex);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexLessThan(int value) {
            return andSortIndexLessThan(Integer.valueOf(value));
        }

        public Criteria andSortIndexLessThan(java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " <",
                value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.SortIndex);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexLessThanOrEqualTo(int value) {
            return andSortIndexLessThanOrEqualTo(Integer.valueOf(value));
        }

        public Criteria andSortIndexLessThanOrEqualTo(java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " <=",
                value, "sortIndex");

            return this;
        }

        public Criteria andSortIndexLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.SortIndex);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andSortIndexLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexIn(int[] values) {
            if (values.length == 1) {
                return andSortIndexEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.SortIndex + " in",
                    values, "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexNotIn(int[] values) {
            if (values.length == 1) {
                return andSortIndexNotEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                    " not in", values, "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexIn(List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andSortIndexEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.SortIndex + " in",
                    values, "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexNotIn(List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andSortIndexNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                    " not in", values, "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexIn(java.lang.Integer[] values) {
            if (values.length == 1) {
                return andSortIndexEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.SortIndex + " in",
                    Arrays.asList(values), "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexNotIn(java.lang.Integer[] values) {
            if (values.length == 1) {
                return andSortIndexNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                    " not in", Arrays.asList(values), "sortIndex");

                return this;
            }
        }

        public Criteria andSortIndexIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andSortIndexBetween(int value1, int value2) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " between",
                value1, value2, "sortIndex");

            return this;
        }

        public Criteria andSortIndexBetween(java.lang.Integer value1,
            java.lang.Integer value2) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex + " between",
                value1, value2, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotBetween(int value1, int value2) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                " not between", value1, value2, "sortIndex");

            return this;
        }

        public Criteria andSortIndexNotBetween(java.lang.Integer value1,
            java.lang.Integer value2) {
            addCriterion(IProductModelPropertyRelateDAO.SortIndex +
                " not between", value1, value2, "sortIndex");

            return this;
        }

        public Criteria andStatusIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.Status + " is null");

            return this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.Status +
                " is not null");

            return this;
        }

        public Criteria andStatusIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.Status +
                " is not null AND " + IProductModelPropertyRelateDAO.Status +
                " <> ''");

            return this;
        }

        public Criteria andStatusIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.Status +
                " is null OR " + IProductModelPropertyRelateDAO.Status +
                " = '')");

            return this;
        }

        public Criteria andStatusEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " = ", value,
                "status");

            return this;
        }

        public Criteria andStatusEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Status);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " <>", value,
                "status");

            return this;
        }

        public Criteria andStatusNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status +
                " is null OR " + IProductModelPropertyRelateDAO.Status + " <>",
                value, "status");

            return this;
        }

        public Criteria andStatusNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Status);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " >", value,
                "status");

            return this;
        }

        public Criteria andStatusGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Status);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " >=", value,
                "status");

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Status);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " <", value,
                "status");

            return this;
        }

        public Criteria andStatusLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Status);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " <=", value,
                "status");

            return this;
        }

        public Criteria andStatusLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Status);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andStatusLessThanOrEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.Status + " like",
                buffer.toString(), "status");

            return this;
        }

        public Criteria andStatusNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.Status + " not like",
                buffer.toString(), "status");

            return this;
        }

        public Criteria andStatusIn(List<String> values) {
            if (values.size() == 1) {
                return andStatusEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Status + " in",
                    values, "status");

                return this;
            }
        }

        public Criteria andStatusNotIn(List<String> values) {
            if (values.size() == 1) {
                return andStatusNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Status + " not in",
                    values, "status");

                return this;
            }
        }

        public Criteria andStatusIn(String[] values) {
            if (values.length == 1) {
                return andStatusEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Status + " in",
                    Arrays.asList(values), "status");

                return this;
            }
        }

        public Criteria andStatusNotIn(String[] values) {
            if (values.length == 1) {
                return andStatusNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Status + " not in",
                    Arrays.asList(values), "status");

                return this;
            }
        }

        public Criteria andStatusIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andStatusBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.Status + " between",
                value1, value2, "status");

            return this;
        }

        public Criteria andStatusNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.Status +
                " not between", value1, value2, "status");

            return this;
        }

        public Criteria andRemarksIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " is null");

            return this;
        }

        public Criteria andRemarksIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.Remarks +
                " is not null");

            return this;
        }

        public Criteria andRemarksIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.Remarks +
                " is not null AND " + IProductModelPropertyRelateDAO.Remarks +
                " <> ''");

            return this;
        }

        public Criteria andRemarksIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.Remarks +
                " is null OR " + IProductModelPropertyRelateDAO.Remarks +
                " = '')");

            return this;
        }

        public Criteria andRemarksEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " = ", value,
                "remarks");

            return this;
        }

        public Criteria andRemarksEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Remarks);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " <>", value,
                "remarks");

            return this;
        }

        public Criteria andRemarksNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks +
                " is null OR " + IProductModelPropertyRelateDAO.Remarks +
                " <>", value, "remarks");

            return this;
        }

        public Criteria andRemarksNotEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Remarks);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " >", value,
                "remarks");

            return this;
        }

        public Criteria andRemarksGreaterThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Remarks);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " >=", value,
                "remarks");

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Remarks);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " <", value,
                "remarks");

            return this;
        }

        public Criteria andRemarksLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Remarks);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " <=", value,
                "remarks");

            return this;
        }

        public Criteria andRemarksLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.Remarks);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRemarksLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " like",
                buffer.toString(), "remarks");

            return this;
        }

        public Criteria andRemarksNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " not like",
                buffer.toString(), "remarks");

            return this;
        }

        public Criteria andRemarksIn(List<String> values) {
            if (values.size() == 1) {
                return andRemarksEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Remarks + " in",
                    values, "remarks");

                return this;
            }
        }

        public Criteria andRemarksNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRemarksNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Remarks +
                    " not in", values, "remarks");

                return this;
            }
        }

        public Criteria andRemarksIn(String[] values) {
            if (values.length == 1) {
                return andRemarksEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Remarks + " in",
                    Arrays.asList(values), "remarks");

                return this;
            }
        }

        public Criteria andRemarksNotIn(String[] values) {
            if (values.length == 1) {
                return andRemarksNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.Remarks +
                    " not in", Arrays.asList(values), "remarks");

                return this;
            }
        }

        public Criteria andRemarksIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " not in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andRemarksBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks + " between",
                value1, value2, "remarks");

            return this;
        }

        public Criteria andRemarksNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.Remarks +
                " not between", value1, value2, "remarks");

            return this;
        }

        public Criteria andObjectRelatedIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " is null");

            return this;
        }

        public Criteria andObjectRelatedIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " is not null");

            return this;
        }

        public Criteria andObjectRelatedIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " is not null AND " +
                IProductModelPropertyRelateDAO.ObjectRelatedId + " <> ''");

            return this;
        }

        public Criteria andObjectRelatedIdIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.ObjectRelatedId +
                " is null OR " +
                IProductModelPropertyRelateDAO.ObjectRelatedId + " = '')");

            return this;
        }

        public Criteria andObjectRelatedIdEqualTo(long value) {
            return andObjectRelatedIdEqualTo(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " = ", value, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.ObjectRelatedId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andObjectRelatedIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdNotEqualTo(long value) {
            return andObjectRelatedIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " <>", value, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdNotEqualToOrIsNull(long value) {
            return andObjectRelatedIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " is null OR " +
                IProductModelPropertyRelateDAO.ObjectRelatedId + " <>", value,
                "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.ObjectRelatedId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andObjectRelatedIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdGreaterThan(long value) {
            return andObjectRelatedIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId + " >",
                value, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.ObjectRelatedId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andObjectRelatedIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdGreaterThanOrEqualTo(long value) {
            return andObjectRelatedIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " >=", value, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.ObjectRelatedId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andObjectRelatedIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdLessThan(long value) {
            return andObjectRelatedIdLessThan(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId + " <",
                value, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.ObjectRelatedId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andObjectRelatedIdLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdLessThanOrEqualTo(long value) {
            return andObjectRelatedIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andObjectRelatedIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " <=", value, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.ObjectRelatedId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andObjectRelatedIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdIn(long[] values) {
            if (values.length == 1) {
                return andObjectRelatedIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                    " in", values, "objectRelatedId");

                return this;
            }
        }

        public Criteria andObjectRelatedIdNotIn(long[] values) {
            if (values.length == 1) {
                return andObjectRelatedIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                    " not in", values, "objectRelatedId");

                return this;
            }
        }

        public Criteria andObjectRelatedIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andObjectRelatedIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                    " in", values, "objectRelatedId");

                return this;
            }
        }

        public Criteria andObjectRelatedIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andObjectRelatedIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                    " not in", values, "objectRelatedId");

                return this;
            }
        }

        public Criteria andObjectRelatedIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andObjectRelatedIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                    " in", Arrays.asList(values), "objectRelatedId");

                return this;
            }
        }

        public Criteria andObjectRelatedIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andObjectRelatedIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                    " not in", Arrays.asList(values), "objectRelatedId");

                return this;
            }
        }

        public Criteria andObjectRelatedIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andObjectRelatedIdBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " between", value1, value2, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " between", value1, value2, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " not between", value1, value2, "objectRelatedId");

            return this;
        }

        public Criteria andObjectRelatedIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.ObjectRelatedId +
                " not between", value1, value2, "objectRelatedId");

            return this;
        }

        public Criteria andRelatedPropertyNameIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyNameIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyNameIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyName + " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyNameIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyName +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyName + " = '')");

            return this;
        }

        public Criteria andRelatedPropertyNameEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " = ", value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyNameEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " <>", value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyName + " <>",
                value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyNameNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " >", value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyNameGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " >=", value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " <", value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyNameLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " <=", value, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " like", buffer.toString(), "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " not like", buffer.toString(), "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                    " in", values, "relatedPropertyName");

                return this;
            }
        }

        public Criteria andRelatedPropertyNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                    " not in", values, "relatedPropertyName");

                return this;
            }
        }

        public Criteria andRelatedPropertyNameIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyNameEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                    " in", Arrays.asList(values), "relatedPropertyName");

                return this;
            }
        }

        public Criteria andRelatedPropertyNameNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                    " not in", Arrays.asList(values), "relatedPropertyName");

                return this;
            }
        }

        public Criteria andRelatedPropertyNameIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyNameBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " between", value1, value2, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyNameNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyName +
                " not between", value1, value2, "relatedPropertyName");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " = ", value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataType);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " <>", value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotEqualToOrIsNull(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataType + " <>",
                value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataType);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " >", value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataType);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeGreaterThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " >=", value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataType);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " <", value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataType);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLessThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " <=", value, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataType);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " like", buffer.toString(), "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " not like", buffer.toString(), "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataTypeEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                    " in", values, "relatedPropertyDataType");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataTypeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                    " not in", values, "relatedPropertyDataType");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataTypeEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                    " in", Arrays.asList(values), "relatedPropertyDataType");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataTypeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                    " not in", Arrays.asList(values), "relatedPropertyDataType");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " between", value1, value2, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataType +
                " not between", value1, value2, "relatedPropertyDataType");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdEqualTo(long value) {
            return andRelatedPropertyDataTypeIdEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyDataTypeIdEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " = ", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotEqualTo(long value) {
            return andRelatedPropertyDataTypeIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyDataTypeIdNotEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <>", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotEqualToOrIsNull(
            long value) {
            return andRelatedPropertyDataTypeIdNotEqualToOrIsNull(Long.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataTypeIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <>", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThan(long value) {
            return andRelatedPropertyDataTypeIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThan(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " >", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThanOrEqualTo(
            long value) {
            return andRelatedPropertyDataTypeIdGreaterThanOrEqualTo(Long.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " >=", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdLessThan(long value) {
            return andRelatedPropertyDataTypeIdLessThan(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyDataTypeIdLessThan(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdLessThanOrEqualTo(
            long value) {
            return andRelatedPropertyDataTypeIdLessThanOrEqualTo(Long.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataTypeIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <=", value, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdIn(long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataTypeIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                    " in", values, "relatedPropertyDataTypeId");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIdNotIn(long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataTypeIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                    " not in", values, "relatedPropertyDataTypeId");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIdIn(
            List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataTypeIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                    " in", values, "relatedPropertyDataTypeId");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIdNotIn(
            List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataTypeIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                    " not in", values, "relatedPropertyDataTypeId");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataTypeIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                    " in", Arrays.asList(values), "relatedPropertyDataTypeId");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIdNotIn(
            java.lang.Long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataTypeIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                    " not in", Arrays.asList(values),
                    "relatedPropertyDataTypeId");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataTypeIdIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdBetween(long value1,
            long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " between", value1, value2, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdBetween(
            java.lang.Long value1, java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " between", value1, value2, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotBetween(long value1,
            long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " not between", value1, value2, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataTypeIdNotBetween(
            java.lang.Long value1, java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataTypeId +
                " not between", value1, value2, "relatedPropertyDataTypeId");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthEqualTo(int value) {
            return andRelatedPropertyDataLengthEqualTo(Integer.valueOf(value));
        }

        public Criteria andRelatedPropertyDataLengthEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " = ", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataLength);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataLengthEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotEqualTo(int value) {
            return andRelatedPropertyDataLengthNotEqualTo(Integer.valueOf(value));
        }

        public Criteria andRelatedPropertyDataLengthNotEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <>", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotEqualToOrIsNull(
            int value) {
            return andRelatedPropertyDataLengthNotEqualToOrIsNull(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataLengthNotEqualToOrIsNull(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <>", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataLength);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthGreaterThan(int value) {
            return andRelatedPropertyDataLengthGreaterThan(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataLengthGreaterThan(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " >", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataLength);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataLengthGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthGreaterThanOrEqualTo(
            int value) {
            return andRelatedPropertyDataLengthGreaterThanOrEqualTo(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataLengthGreaterThanOrEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " >=", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataLength);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataLengthGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthLessThan(int value) {
            return andRelatedPropertyDataLengthLessThan(Integer.valueOf(value));
        }

        public Criteria andRelatedPropertyDataLengthLessThan(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataLength);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataLengthLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthLessThanOrEqualTo(int value) {
            return andRelatedPropertyDataLengthLessThanOrEqualTo(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataLengthLessThanOrEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <=", value, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataLength);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataLengthLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthIn(int[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataLengthEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                    " in", values, "relatedPropertyDataLength");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataLengthNotIn(int[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataLengthNotEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                    " not in", values, "relatedPropertyDataLength");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataLengthIn(
            List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataLengthEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                    " in", values, "relatedPropertyDataLength");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataLengthNotIn(
            List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataLengthNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                    " not in", values, "relatedPropertyDataLength");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataLengthIn(
            java.lang.Integer[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataLengthEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                    " in", Arrays.asList(values), "relatedPropertyDataLength");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataLengthNotIn(
            java.lang.Integer[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataLengthNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                    " not in", Arrays.asList(values),
                    "relatedPropertyDataLength");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataLengthIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataLengthBetween(int value1,
            int value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " between", value1, value2, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthBetween(
            java.lang.Integer value1, java.lang.Integer value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " between", value1, value2, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotBetween(int value1,
            int value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " not between", value1, value2, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataLengthNotBetween(
            java.lang.Integer value1, java.lang.Integer value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataLength +
                " not between", value1, value2, "relatedPropertyDataLength");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyEqualTo(int value) {
            return andRelatedPropertyDataAccuracyEqualTo(Integer.valueOf(value));
        }

        public Criteria andRelatedPropertyDataAccuracyEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " = ", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotEqualTo(int value) {
            return andRelatedPropertyDataAccuracyNotEqualTo(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataAccuracyNotEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <>", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotEqualToOrIsNull(
            int value) {
            return andRelatedPropertyDataAccuracyNotEqualToOrIsNull(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataAccuracyNotEqualToOrIsNull(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <>", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThan(int value) {
            return andRelatedPropertyDataAccuracyGreaterThan(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThan(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " >", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThanOrEqualTo(
            int value) {
            return andRelatedPropertyDataAccuracyGreaterThanOrEqualTo(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThanOrEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " >=", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyLessThan(int value) {
            return andRelatedPropertyDataAccuracyLessThan(Integer.valueOf(value));
        }

        public Criteria andRelatedPropertyDataAccuracyLessThan(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyLessThanOrEqualTo(
            int value) {
            return andRelatedPropertyDataAccuracyLessThanOrEqualTo(Integer.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyDataAccuracyLessThanOrEqualTo(
            java.lang.Integer value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <=", value, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyIn(int[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataAccuracyEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                    " in", values, "relatedPropertyDataAccuracy");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataAccuracyNotIn(int[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataAccuracyNotEqualTo((java.lang.Integer) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                    " not in", values, "relatedPropertyDataAccuracy");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataAccuracyIn(
            List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataAccuracyEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                    " in", values, "relatedPropertyDataAccuracy");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataAccuracyNotIn(
            List<java.lang.Integer> values) {
            if (values.size() == 1) {
                return andRelatedPropertyDataAccuracyNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                    " not in", values, "relatedPropertyDataAccuracy");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataAccuracyIn(
            java.lang.Integer[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataAccuracyEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                    " in", Arrays.asList(values), "relatedPropertyDataAccuracy");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataAccuracyNotIn(
            java.lang.Integer[] values) {
            if (values.length == 1) {
                return andRelatedPropertyDataAccuracyNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                    " not in", Arrays.asList(values),
                    "relatedPropertyDataAccuracy");

                return this;
            }
        }

        public Criteria andRelatedPropertyDataAccuracyIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyBetween(int value1,
            int value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " between", value1, value2, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyBetween(
            java.lang.Integer value1, java.lang.Integer value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " between", value1, value2, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotBetween(int value1,
            int value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " not between", value1, value2, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyDataAccuracyNotBetween(
            java.lang.Integer value1, java.lang.Integer value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyDataAccuracy +
                " not between", value1, value2, "relatedPropertyDataAccuracy");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " = ", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <>", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotEqualToOrIsNull(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <>", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " >", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullGreaterThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " >=", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLessThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <=", value, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " like", buffer.toString(), "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " not like", buffer.toString(), "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyIsAllowNullEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                    " in", values, "relatedPropertyIsAllowNull");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAllowNullNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyIsAllowNullNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                    " not in", values, "relatedPropertyIsAllowNull");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAllowNullIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIsAllowNullEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                    " in", Arrays.asList(values), "relatedPropertyIsAllowNull");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAllowNullNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIsAllowNullNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                    " not in", Arrays.asList(values),
                    "relatedPropertyIsAllowNull");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAllowNullIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " between", value1, value2, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyIsAllowNullNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAllowNull +
                " not between", value1, value2, "relatedPropertyIsAllowNull");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " = ", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <>", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotEqualToOrIsNull(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <>", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " >", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyGreaterThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " >=", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLessThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <=", value, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " like", buffer.toString(), "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " not like", buffer.toString(), "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyisPrimaryKeyEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                    " in", values, "relatedPropertyisPrimaryKey");

                return this;
            }
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyisPrimaryKeyNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                    " not in", values, "relatedPropertyisPrimaryKey");

                return this;
            }
        }

        public Criteria andRelatedPropertyisPrimaryKeyIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyisPrimaryKeyEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                    " in", Arrays.asList(values), "relatedPropertyisPrimaryKey");

                return this;
            }
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyisPrimaryKeyNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                    " not in", Arrays.asList(values),
                    "relatedPropertyisPrimaryKey");

                return this;
            }
        }

        public Criteria andRelatedPropertyisPrimaryKeyIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " between", value1, value2, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyisPrimaryKeyNotBetween(
            String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyisPrimaryKey +
                " not between", value1, value2, "relatedPropertyisPrimaryKey");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " = ", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <>", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotEqualToOrIsNull(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <>", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " >", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncGreaterThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " >=", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLessThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <=", value, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " like", buffer.toString(), "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " not like", buffer.toString(), "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyIsAutoIncEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                    " in", values, "relatedPropertyIsAutoInc");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAutoIncNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyIsAutoIncNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                    " not in", values, "relatedPropertyIsAutoInc");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAutoIncIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIsAutoIncEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                    " in", Arrays.asList(values), "relatedPropertyIsAutoInc");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAutoIncNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyIsAutoIncNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                    " not in", Arrays.asList(values), "relatedPropertyIsAutoInc");

                return this;
            }
        }

        public Criteria andRelatedPropertyIsAutoIncIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " between", value1, value2, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyIsAutoIncNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyIsAutoInc +
                " not between", value1, value2, "relatedPropertyIsAutoInc");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdEqualTo(long value) {
            return andRelatedPropertyObjectIdEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyObjectIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " = ", value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectIdEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotEqualTo(long value) {
            return andRelatedPropertyObjectIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyObjectIdNotEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " <>", value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotEqualToOrIsNull(long value) {
            return andRelatedPropertyObjectIdNotEqualToOrIsNull(Long.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyObjectIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectId + " <>",
                value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdGreaterThan(long value) {
            return andRelatedPropertyObjectIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyObjectIdGreaterThan(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " >", value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdGreaterThanOrEqualTo(
            long value) {
            return andRelatedPropertyObjectIdGreaterThanOrEqualTo(Long.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyObjectIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " >=", value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdLessThan(long value) {
            return andRelatedPropertyObjectIdLessThan(Long.valueOf(value));
        }

        public Criteria andRelatedPropertyObjectIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " <", value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectIdLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdLessThanOrEqualTo(long value) {
            return andRelatedPropertyObjectIdLessThanOrEqualTo(Long.valueOf(
                    value));
        }

        public Criteria andRelatedPropertyObjectIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " <=", value, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdIn(long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                    " in", values, "relatedPropertyObjectId");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectIdNotIn(long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                    " not in", values, "relatedPropertyObjectId");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectIdIn(
            List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andRelatedPropertyObjectIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                    " in", values, "relatedPropertyObjectId");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectIdNotIn(
            List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andRelatedPropertyObjectIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                    " not in", values, "relatedPropertyObjectId");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                    " in", Arrays.asList(values), "relatedPropertyObjectId");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                    " not in", Arrays.asList(values), "relatedPropertyObjectId");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectIdIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectIdBetween(long value1,
            long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " between", value1, value2, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdBetween(
            java.lang.Long value1, java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " between", value1, value2, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotBetween(long value1,
            long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " not between", value1, value2, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectIdNotBetween(
            java.lang.Long value1, java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectId +
                " not between", value1, value2, "relatedPropertyObjectId");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " = ", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectNameEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <>", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotEqualToOrIsNull(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <>", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " >", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectNameGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameGreaterThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " >=", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLessThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <=", value, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " like", buffer.toString(), "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " not like", buffer.toString(), "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyObjectNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                    " in", values, "relatedPropertyObjectName");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyObjectNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                    " not in", values, "relatedPropertyObjectName");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectNameIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectNameEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                    " in", Arrays.asList(values), "relatedPropertyObjectName");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectNameNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                    " not in", Arrays.asList(values),
                    "relatedPropertyObjectName");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectNameIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectNameBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " between", value1, value2, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectNameNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectName +
                " not between", value1, value2, "relatedPropertyObjectName");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " is null");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " is not null");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " is not null AND " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <> ''");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " = '')");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " = ", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectType);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <>", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotEqualToOrIsNull(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " is null OR " +
                IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <>", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectType);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " >", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectType);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeGreaterThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " >=", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectType);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectType);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLessThanOrEqualTo(
            String value) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <=", value, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.RelatedPropertyObjectType);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " like", buffer.toString(), "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " not like", buffer.toString(), "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyObjectTypeEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                    " in", values, "relatedPropertyObjectType");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectTypeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andRelatedPropertyObjectTypeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                    " not in", values, "relatedPropertyObjectType");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectTypeIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectTypeEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                    " in", Arrays.asList(values), "relatedPropertyObjectType");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectTypeNotIn(String[] values) {
            if (values.length == 1) {
                return andRelatedPropertyObjectTypeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                    " not in", Arrays.asList(values),
                    "relatedPropertyObjectType");

                return this;
            }
        }

        public Criteria andRelatedPropertyObjectTypeIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotIn(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " between", value1, value2, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andRelatedPropertyObjectTypeNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.RelatedPropertyObjectType +
                " not between", value1, value2, "relatedPropertyObjectType");

            return this;
        }

        public Criteria andPropertyNameIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " is null");

            return this;
        }

        public Criteria andPropertyNameIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " is not null");

            return this;
        }

        public Criteria andPropertyNameIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " is not null AND " +
                IProductModelPropertyRelateDAO.PropertyName + " <> ''");

            return this;
        }

        public Criteria andPropertyNameIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.PropertyName +
                " is null OR " + IProductModelPropertyRelateDAO.PropertyName +
                " = '')");

            return this;
        }

        public Criteria andPropertyNameEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " = ",
                value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameEqualToForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyNameEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " = ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " <>",
                value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " is null OR " + IProductModelPropertyRelateDAO.PropertyName +
                " <>", value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyNameNotEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " <> ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " >",
                value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyNameGreaterThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " > ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " >=",
                value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " >= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " <",
                value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameLessThanForeignKey(java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyNameLessThan(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " < ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " <=",
                value, "propertyName");

            return this;
        }

        public Criteria andPropertyNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " <= ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " like",
                buffer.toString(), "propertyName");

            return this;
        }

        public Criteria andPropertyNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " not like", buffer.toString(), "propertyName");

            return this;
        }

        public Criteria andPropertyNameIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                    " in", values, "propertyName");

                return this;
            }
        }

        public Criteria andPropertyNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                    " not in", values, "propertyName");

                return this;
            }
        }

        public Criteria andPropertyNameIn(String[] values) {
            if (values.length == 1) {
                return andPropertyNameEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                    " in", Arrays.asList(values), "propertyName");

                return this;
            }
        }

        public Criteria andPropertyNameNotIn(String[] values) {
            if (values.length == 1) {
                return andPropertyNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                    " not in", Arrays.asList(values), "propertyName");

                return this;
            }
        }

        public Criteria andPropertyNameIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName + " in ",
                subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyNameBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " between", value1, value2, "propertyName");

            return this;
        }

        public Criteria andPropertyNameNotBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyName +
                " not between", value1, value2, "propertyName");

            return this;
        }

        public Criteria andPropertyObjectIdIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " is null");

            return this;
        }

        public Criteria andPropertyObjectIdIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " is not null");

            return this;
        }

        public Criteria andPropertyObjectIdIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " is not null AND " +
                IProductModelPropertyRelateDAO.PropertyObjectId + " <> ''");

            return this;
        }

        public Criteria andPropertyObjectIdIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.PropertyObjectId +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyObjectId + " = '')");

            return this;
        }

        public Criteria andPropertyObjectIdEqualTo(long value) {
            return andPropertyObjectIdEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " = ", value, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectId);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectIdEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdNotEqualTo(long value) {
            return andPropertyObjectIdNotEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdNotEqualTo(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " <>", value, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdNotEqualToOrIsNull(long value) {
            return andPropertyObjectIdNotEqualToOrIsNull(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdNotEqualToOrIsNull(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyObjectId + " <>", value,
                "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectId);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectIdNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdGreaterThan(long value) {
            return andPropertyObjectIdGreaterThan(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdGreaterThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " >", value, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectId);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectIdGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdGreaterThanOrEqualTo(long value) {
            return andPropertyObjectIdGreaterThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdGreaterThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " >=", value, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectId);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectIdGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdLessThan(long value) {
            return andPropertyObjectIdLessThan(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdLessThan(java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " <", value, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectId);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectIdLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdLessThanOrEqualTo(long value) {
            return andPropertyObjectIdLessThanOrEqualTo(Long.valueOf(value));
        }

        public Criteria andPropertyObjectIdLessThanOrEqualTo(
            java.lang.Long value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " <=", value, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectId);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectIdLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdIn(long[] values) {
            if (values.length == 1) {
                return andPropertyObjectIdEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                    " in", values, "propertyObjectId");

                return this;
            }
        }

        public Criteria andPropertyObjectIdNotIn(long[] values) {
            if (values.length == 1) {
                return andPropertyObjectIdNotEqualTo((java.lang.Long) values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                    " not in", values, "propertyObjectId");

                return this;
            }
        }

        public Criteria andPropertyObjectIdIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andPropertyObjectIdEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                    " in", values, "propertyObjectId");

                return this;
            }
        }

        public Criteria andPropertyObjectIdNotIn(List<java.lang.Long> values) {
            if (values.size() == 1) {
                return andPropertyObjectIdNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                    " not in", values, "propertyObjectId");

                return this;
            }
        }

        public Criteria andPropertyObjectIdIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andPropertyObjectIdEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                    " in", Arrays.asList(values), "propertyObjectId");

                return this;
            }
        }

        public Criteria andPropertyObjectIdNotIn(java.lang.Long[] values) {
            if (values.length == 1) {
                return andPropertyObjectIdNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                    " not in", Arrays.asList(values), "propertyObjectId");

                return this;
            }
        }

        public Criteria andPropertyObjectIdIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectIdBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " between", value1, value2, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " between", value1, value2, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdNotBetween(long value1, long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " not between", value1, value2, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyObjectIdNotBetween(java.lang.Long value1,
            java.lang.Long value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectId +
                " not between", value1, value2, "propertyObjectId");

            return this;
        }

        public Criteria andPropertyDataTypeIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " is null");

            return this;
        }

        public Criteria andPropertyDataTypeIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " is not null");

            return this;
        }

        public Criteria andPropertyDataTypeIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " is not null AND " +
                IProductModelPropertyRelateDAO.PropertyDataType + " <> ''");

            return this;
        }

        public Criteria andPropertyDataTypeIsEmpty() {
            addCriterion("(" + IProductModelPropertyRelateDAO.PropertyDataType +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyDataType + " = '')");

            return this;
        }

        public Criteria andPropertyDataTypeEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " = ", value, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyDataType);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyDataTypeEqualTo(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " <>", value, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyDataType + " <>", value,
                "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyDataType);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyDataTypeNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " >", value, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyDataType);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyDataTypeGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " >=", value, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyDataType);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyDataTypeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " <", value, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyDataType);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyDataTypeLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " <=", value, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyDataType);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyDataTypeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " like", buffer.toString(), "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " not like", buffer.toString(), "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyDataTypeEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                    " in", values, "propertyDataType");

                return this;
            }
        }

        public Criteria andPropertyDataTypeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyDataTypeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                    " not in", values, "propertyDataType");

                return this;
            }
        }

        public Criteria andPropertyDataTypeIn(String[] values) {
            if (values.length == 1) {
                return andPropertyDataTypeEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                    " in", Arrays.asList(values), "propertyDataType");

                return this;
            }
        }

        public Criteria andPropertyDataTypeNotIn(String[] values) {
            if (values.length == 1) {
                return andPropertyDataTypeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                    " not in", Arrays.asList(values), "propertyDataType");

                return this;
            }
        }

        public Criteria andPropertyDataTypeIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyDataTypeBetween(String value1, String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " between", value1, value2, "propertyDataType");

            return this;
        }

        public Criteria andPropertyDataTypeNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyDataType +
                " not between", value1, value2, "propertyDataType");

            return this;
        }

        public Criteria andPropertyObjectNameIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " is null");

            return this;
        }

        public Criteria andPropertyObjectNameIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " is not null");

            return this;
        }

        public Criteria andPropertyObjectNameIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " is not null AND " +
                IProductModelPropertyRelateDAO.PropertyObjectName + " <> ''");

            return this;
        }

        public Criteria andPropertyObjectNameIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.PropertyObjectName +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyObjectName + " = '')");

            return this;
        }

        public Criteria andPropertyObjectNameEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " = ", value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectName);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectNameEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " <>", value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyObjectName + " <>",
                value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectName);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectNameNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " >", value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectName);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectNameGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " >=", value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectName);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectNameGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " <", value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectName);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectNameLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " <=", value, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectName);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectNameLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " like", buffer.toString(), "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " not like", buffer.toString(), "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyObjectNameEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                    " in", values, "propertyObjectName");

                return this;
            }
        }

        public Criteria andPropertyObjectNameNotIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyObjectNameNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                    " not in", values, "propertyObjectName");

                return this;
            }
        }

        public Criteria andPropertyObjectNameIn(String[] values) {
            if (values.length == 1) {
                return andPropertyObjectNameEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                    " in", Arrays.asList(values), "propertyObjectName");

                return this;
            }
        }

        public Criteria andPropertyObjectNameNotIn(String[] values) {
            if (values.length == 1) {
                return andPropertyObjectNameNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                    " not in", Arrays.asList(values), "propertyObjectName");

                return this;
            }
        }

        public Criteria andPropertyObjectNameIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectNameBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " between", value1, value2, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectNameNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectName +
                " not between", value1, value2, "propertyObjectName");

            return this;
        }

        public Criteria andPropertyObjectTypeIsNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " is null");

            return this;
        }

        public Criteria andPropertyObjectTypeIsNotNull() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " is not null");

            return this;
        }

        public Criteria andPropertyObjectTypeIsNotEmpty() {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " is not null AND " +
                IProductModelPropertyRelateDAO.PropertyObjectType + " <> ''");

            return this;
        }

        public Criteria andPropertyObjectTypeIsEmpty() {
            addCriterion("(" +
                IProductModelPropertyRelateDAO.PropertyObjectType +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyObjectType + " = '')");

            return this;
        }

        public Criteria andPropertyObjectTypeEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " = ", value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectType);
            str.append(" = ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectTypeEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " = ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeNotEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " <>", value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeNotEqualToOrIsNull(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " is null OR " +
                IProductModelPropertyRelateDAO.PropertyObjectType + " <>",
                value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeNotEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectType);
            str.append(" <> ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectTypeNotEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " <> ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeGreaterThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " >", value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeGreaterThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectType);
            str.append(" > ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectTypeGreaterThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " > ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeGreaterThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " >=", value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeGreaterThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectType);
            str.append(" >= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectTypeGreaterThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " >= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeLessThan(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " <", value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeLessThanForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectType);
            str.append(" < ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectTypeLessThan(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " < ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeLessThanOrEqualTo(String value) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " <=", value, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeLessThanOrEqualToForeignKey(
            java.lang.String key) {
            StringBuffer str = new StringBuffer(IProductModelPropertyRelateDAO.PropertyObjectType);
            str.append(" <= ").append(key);
            addForeignKeyCriterion(str.toString());

            return this;
        }

        public Criteria andPropertyObjectTypeLessThanOrEqualTo(
            BaseQueryBean subQueryBean, IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " <= ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " like", buffer.toString(), "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeNotLike(String value) {
            StringBuffer buffer = new StringBuffer("%");
            buffer.append(value);
            buffer.append("%");
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " not like", buffer.toString(), "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyObjectTypeEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                    " in", values, "propertyObjectType");

                return this;
            }
        }

        public Criteria andPropertyObjectTypeNotIn(List<String> values) {
            if (values.size() == 1) {
                return andPropertyObjectTypeNotEqualTo(values.get(0));
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                    " not in", values, "propertyObjectType");

                return this;
            }
        }

        public Criteria andPropertyObjectTypeIn(String[] values) {
            if (values.length == 1) {
                return andPropertyObjectTypeEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                    " in", Arrays.asList(values), "propertyObjectType");

                return this;
            }
        }

        public Criteria andPropertyObjectTypeNotIn(String[] values) {
            if (values.length == 1) {
                return andPropertyObjectTypeNotEqualTo(values[0]);
            } else {
                addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                    " not in", Arrays.asList(values), "propertyObjectType");

                return this;
            }
        }

        public Criteria andPropertyObjectTypeIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeNotIn(BaseQueryBean subQueryBean,
            IDataAccessInterface<?, ?> dao) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " not in ", subQueryBean, dao);

            return this;
        }

        public Criteria andPropertyObjectTypeBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " between", value1, value2, "propertyObjectType");

            return this;
        }

        public Criteria andPropertyObjectTypeNotBetween(String value1,
            String value2) {
            addCriterion(IProductModelPropertyRelateDAO.PropertyObjectType +
                " not between", value1, value2, "propertyObjectType");

            return this;
        }
    }
}
